Date: Wed, 20 Nov 1996 22:55:38 GMT
Server: Apache/1.0.5
Content-type: text/html
Content-length: 4115
Last-modified: Fri, 22 Sep 1995 19:01:14 GMT

<HEAD><TITLE>CS193e: Object-Oriented User Interface Programming on the  
NeXT machineDesign</TITLE><BODY>
<H2><!WA0><IMG SRC="http://www-pcd.stanford.edu/gifs/logo.hci.gif">
CS193e: Object-Oriented User Interface Programming on the  
NeXT machine</H2>
<H3>Stanford University 1994-95</H3>

Spring, (Zelenski@cs.stanford.edu)
<H2>Check to make sure this is being offered 94-95</H2>
<P>

CS193e uses NeXTstep as a platform to explore designing and implementing  
significant software projects in a GUI environment.  Programming labs  
ensure students acquire strong programming and design skills.  Topics  
covered include object-oriented architecture, elements of user interface  
design, testing strategies, project management.

<H2>Handout #1 1993-94 excerpt:</H2>

Welcome to CS193e: Object-Oriented User Interface Programming on the  
NeXT machine.  In your typical CS class, you focus your efforts on the  
algorithmic side of problem solving. This class deals with a different  
type of program complexity: building programs to interact with users.   
The user takes charge and the program must appropriately present the  
application functionality, handle user actions, and provide feedback on  
those events.  The Xerox Star, the Apple Macintosh, the varied graphic  
interfaces of Sun workstations are all examples of environments where  
applications must support this user-driven model.
<P>

The user has greatly benefitted from the shift in application design,  
but unfortunately, the programmer often pays the price for this  
ease-of-use, investing months of engineering time dealing with the  
myriad facets of the user interface.  Given that programmers don't enjoy  
pain and re-inventing the wheel, the environments for application design  
have been evolving to provide better support for application  
development.  Large toolkits exist for the Mac, Windows, X, etc. that  
assist in presenting a consistent interface and interaction with user.  
<P>

Another trend is the move towards object-oriented programming.   
Object-oriented programming has some advantages over the traditional  
procedure programming mode.  First, it increases the modularity of  
programs and the likelihood that modules can be reused in other programs  
without being rewritten from scratch.  Second, object-oriented  
programming is a natural framework in which to program graphical user  
interfaces; graphics elements such as windows and menus are naturally  
modelled as objects, while clicking with the mouse can be viewed simply  
as sending a message to the object under the cursor at the time of the  
click.  
<P>

The object-oriented system bundled with the NeXT machine, NeXTstep,  
represents the one of the most cohesive object-oriented UI toolkits and  
appears to the benchmark to which other systems are compared.  For this  
reason, you will be learning and using the NeXT to explore the world of  
building UI applications.  But more broadly, the experience of working  
in an object-oriented toolkit and principles of user-centered design  
should transfer to other UI environments you may work with.
<P>

CS193e has also been adapted to serve as an alternative path to the  
senior project course 194B.  194A & B were designed as a two-quarter  
sequence designed to prepare you for, then turn you loose on, a  
substantial systems project.  194A focuses on programming the Macintosh  
toolbox, where 193e chooses the NeXT for a platform.  Either way, you  
should gain good experience in designing, implementing, and testing  
significant programs and should be well prepared to produce a great  
project for 194B.

<NOPRINT><HR>
Click here for list of <!WA1><A HREF="http://www-pcd.stanford.edu/hci/courses.html">HCI courses at Stanford</A> 
<ADDRESS>
Information provided for the <!WA2><A HREF="http://www-cs.stanford.edu">Stanford Computer Science Department</A> by the <!WA3><A HREF="http://www-pcd.stanford.edu/hci/hci-coordinator.html">HCI Course Coordinator</A> as part of the description of <!WA4><A HREF="http://www-pcd.stanford.edu/hci.html">HCI at Stanford.</A>   Last updated Sept. 11, 1994
</ADDRESS>
</NOPRINT>
